package com.itheima.web.controller;


import cn.hutool.captcha.LineCaptcha;
import com.itheima.web.manager.AdminManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@RestController
public class AdminController {

    @Autowired
    private AdminManager adminManager;

    /**
     * 生成验证码
     *  uuid    前端传入过来的一个唯一标识符，每一个用户当前的操作
     * @param uuid
     * @param response
     * @return
     */
    @GetMapping("/system/users/verification")
    public void getCodeImg(String uuid, HttpServletResponse response) throws IOException {
        //通过糊涂包生成图片
        LineCaptcha lineCaptcha = adminManager.createImgCode(uuid);

        //设置格式  图片格式
        response.setContentType("image/jpeg");//text/html
        //输出给浏览器
        lineCaptcha.write(response.getOutputStream());//将图片输出字节流
    }

    /**
     * 用户登录
     */
    @PostMapping("/system/users/login")
    public Map<String, String> login(@RequestBody Map<String, String> map) {
        //1.接收参数
        String username = map.get("username");
        String password = map.get("password");
        String verificationCode = map.get("verificationCode");
        String uuid = map.get("uuid");
        //2.调用manager登录，返回token
        String token = adminManager.login(username, password, verificationCode, uuid);
        //3.组装返回map
        Map<String, String> tokenMap = new HashMap<>();
        tokenMap.put("token", token);
        return tokenMap;
    }

    /**
     * 校验登录信息   返回基础信息
     */
    @PostMapping("/system/users/profile")
    public Map profile(@RequestHeader("Authorization") String token) {
        //此处有坑  前端存储的token有固定格式的    前面都有 Bearer空格
        //我们在使用token的时候 需要删除前端携带过来的前缀
        //Bearer eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9.ZOPAMFWwGV5kbDgPqc71bv2h11_rgqrulRSzWQIEZkY
        //System.out.println("----" + token);

        return adminManager.profile(token.replace("Bearer ", ""));
    }

    /**
     *用户登出
     */
    @PostMapping("/system/users/logout")
    public Map logout(@RequestHeader("Authorization") String token) {


        return adminManager.logout(token.replace("Bearer ", ""));
    }




}
